home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
BBS in a Box 3
/
BBS in a box - Trilogy III.iso
/
Files
/
Prog
/
D-G
/
gestalt-selectors-213.etx
< prev
next >
Encoding:
Amiga
Atari
Commodore
DOS
FM Towns/JPY
Macintosh
Macintosh JP
NeXTSTEP
RISC OS/Acorn
UTF-8
Wrap
Text File
|
1993-11-14
|
94.8 KB
|
2,280 lines
|
[
TEXT/EDIT
]
Supplemental Gestalt Selectors List 2.1.3
=========================================
First published: 12 October 1992, 13:15 CET (GMT+1)
Last modified : 14 November 1993, 19:00 CET (GMT+1)
Supplemental to the selector codes listed in the Gestalt Chapter of
Inside Macintosh VI (IM VI), that is.
These can include selector codes installed by Apple (system) software or by
software from third parties (your software?).
About IM Operating System Utilities: First it was scheduled for Winter 1992,
then delayed until June and later to October 1993. Now I heard it will
probably be released in May 1994. Retail price in Holland will be around $25.
This file can be best viewed with a mono-spaced font like Monaco. Because
it is wrapped as setext you can use several utilities to index and read it.
For the Macintosh you can use Easy View and on a UNIX system sv (setext
viewer) works fine. Both are available by FTP from sumex-aim.stanford.edu,
archived respectively as:
info-mac/text/easy-view-232.hqx
info-mac/text/easy-view-233-patch.hqx
info-mac/text/setext-viewer-02-unix.uu
See for more information about this list the chapters at the end.
Contents
--------
Changes
Contributions
Changes Overview
Gestalt Selector Codes
Apple System Software
Apple Additional Software
Third Parties Software
Unknown Gestalt Selector Codes
Apple System Software
Apple Additional Software
Third Parties Software
Gestalt Manager Calls
Gestalt Manager Routines
Undocumented Gestalt Manager Routines
Gestalt Value Routines
Kilo-liners
Direct Gestalt Calls
Direct GestaltValue Calls
GestaltSelectorZero
Abbreviations
Sources
Miscellaneous
AppleShare File & Print Server selector codes
Glue code
Related Software
About this list
Availability
Acknowledgements
Definitions and Format
Use in Language
Definitions
Format Selector Entry
Format Version Numbers
Legal Stuff
Notice of Liability
Trademarks
Distribution
Editor's Address
Changes
=======
All contributions and changes to the list since version 2.1 are listed
in this chapter.
Contributions
-------------
The following persons contributed to this version:
_Person: Software: Selector(s) added/changed: _
Anonymous System (enablers) drag, intd, teat
J.D.S. Babcock/Rene Ros
System (enablers) mach
Mark Dawson System (enablers) mach
Lawrence D'Oliveiro AppleScript ext evnt
Michael Hecht AppleScript ext evnt
System (enablers) mach
Roland Mansson AppleShare Server? afps
System (Q840AV) aint, os , vers
System (enablers) mach
unknown LxRZ
Rene Ros RapidTrack cp AP05
Responder ext wma.
System (enablers) mach
_Person: Chapter/Section(s): _
Mark Dawson, Michael Hecht and Roland Mansson provided the machine types of
new Macs. Everyone of them had a piece of the puzzle.
I had made an typo with the bit number when an additional bit was reported
for the gestaltAppleEventsAttr selector. This error stayed around until
the correct info appeared. And even then I thought it was correct until
Lawrence D'Oliveiro said he'd never seen bit 2 set. A look into the
contributions archive revealed my error. Changed!
The gestaltMachineType entry has changed a bit. It now includes unreleased
machines as well, although with most of them the return value is still a
mystery.
Changes Overview
----------------
Added selectors
Apple System :
Apple Add. : drag, teat
Third Parties :
Added unknown
Apple System :
Apple Add. : afps
Third Parties : AP05
Changed selectors
Apple System : evnt, mach, os , wma.
Apple Add. :
Third Parties :
Changed unknown
Apple System : aint
Apple Add. :
Third Parties : LxRZ
Previously unknown
Apple System : intd
Apple Add. :
Third Parties :
Includes updates 2.1.1 thru 2.1.3, send to subscribers of the distribution
list.
Gestalt Selector Codes
======================
The following sections list selector codes of which the meaning is know.
Apple System Software
---------------------
alis (System [7.0])
gestaltAliasMgrAttr (addition by Remote AppleTalk Aliases)
gestaltAliasMgrSupportsRemoteAppletalk = 1;
{supports Remote Appletalk} *9
See also remarks with 'qtim' selector.
atkv (System [7.0, AppleTalk 56])
gestaltATalkVersion *4 (not listed)
Returns AppleTalk version as NumVersion.
This is different from 'atlk' !
With the release of the System 7 Tuner product, AppleTalk will not be
loaded at startup, if prior to the previous shutdown AppleTalk was
turned off in the Chooser. Under this circumstance, the 'atkv'
selector is not available. If the 'atkv' selector is not available
under System 7, this is an indicator that AppleTalk cannot be turned
on without doing so in the Chooser and rebooting the system. *4
gestaltATalkVersion = 'atkv'; *3/5
atlk (System [6.0.4])
gestaltAppleTalkVersion (addition)
Returns the version of the .MPP driver as INTEGER.
LAPMgrExists := (AppleTalkVersion >= 53); *4
cash (System [???]) *10
gestaltRAMCacheSize (not listed)
Returns byte-size of physical RAM allocated to Disk Cache.
0 = Disk Cache Off
gestaltRAMCacheSize = 'cash';
NOTE:
Is listed in THINK Reference 1.0 but it is unknown which System
Software version should install it.
conn (System [7.0], Communications Toolbox installed)
gestaltConnMgrAttr (addition)
With System 6, this Gestalt selector isn't implemented when the
Communications Toolbox is installed (Michael Hecht).
gestaltConnMgrErrorString = 2; {has CMGetErrorString} *11
gestaltConnMgrMultiAsyncIO = 3; {CMNewsIOPB,CMDisposeIOPB,} *11
{CMPBRead,CMPBWrite,CMPBIOKill}
cpnt (System [7.1])
(Color Picker Extension ext [2.0]))
(QuickTime ext [1.0])
(Sound Manager ext [3.0]?)
(Speech Manager ext [1.1.1])
gestaltComponentMgr (not listed)
Returns Component Manager version as INTEGER.
gestaltComponentMgr = 'cpnt'; *6
cput (System? [???]) *20
gestaltNativeCPUtype (not listed)
gestaltCPU68000 = 1;
gestaltCPU68010 = 2;
gestaltCPU68020 = 3;
gestaltCPU68030 = 4;
gestaltCPU68040 = 5;
gestaltCPU601 = 1;
NOTE:
This selector should probably be used together with the
gestaltSysArchitecture ('sysa') selector. When the gestalt68k bit is
set the MC 680x0 CPUs are returned, and if the gestaltPowerPC bit is
set the PowerPC CPUs are returned. Meanwhile the gestaltProcessorType
('proc') probably returns the CPU which is emulated when on a PowerPC.
Nothing of this is confirmed anywhere but it sounds logical.
This selector is installed on a Centris 660AV.
(Rene Ros)
crm (System [7.0], Communications Toolbox Installed)
gestaltCRMAttr (additions)
gestaltCRMPersistentFix = 1; {fix for persistent tools} *11
gestaltCRMToolRsrcCalls = 2; {has CRMGetToolResource/} *11
{ReleaseToolResource}
ctbm (System [7.0], Communications Toolbox installed)
gestaltCTBManagersAttr (not listed)
Returns information about the Communications Toolbox Managers, it is a
bitmask of which managers are present.
gestaltCTBManagersAttr = 'ctbm'; *7
ctbu (System [7.0], Communications Toolbox installed)
gestaltCTBUtilsAttr (not listed)
Returns information about the Communications Toolbox Utilities.
gestaltCTBUtilsAttr = 'ctbu'; *7
gestaltCTBUtilsPresent = 0; *7
ctbv (System [7.0], Communications Toolbox Installed)
gestaltCTBVersion (addition)
This selector is also installed by the Communications Toolbox for
System 6 (version 6.0.4 and higher).
See for details IM VI.
dict (System [7.1])
gestaltDictionaryMgrAttr (not listed)
Returns information about the Dictionary Manager.
gestaltDictionaryMgrAttr = 'dict';
gestaltDictionaryMgrPresent = 0;
easy (Easy Access cp [7.0?]) *20
gestaltEasyAccessAttr (replacement?)
gestaltEasyAccessAttr = 'easy';
gestaltEasyAccessOff = 0; {Easy Access present but off}
gestaltEasyAccessOn = 1; {Easy Access on}
eajt (Easy Access cp [7.0])
gestaltEasyAccessJTable (not listed)
Returns the base address of the Easy Access jump-trap table.
gestaltEasyAccessJTable = 'eajt'; *3
edtn (System [7.0])
gestaltEditionMgrAttr (addition by Easy Open)
gestaltEditionMgrTranslationAware = 1; *12
evnt (System [7.0])
(Apple Event Mgr [1.0.1] installed by AppleScript ext [1.0])
gestaltAppleEventsAttr (addition)
gestaltAppleEvents101Present = 1; {Apple Event Mgr 1.0.1 present}
flag (Network Extension ext [System 7.0 *4])
gestaltFlagshipAttr (not listed)
Returns information about the Flagship.
gestaltFlagshipAttr = 'flag'; *3
gestaltFlagshipPresent = 0; *3
gestaltFlagshipRegistered = 1; *3
fndr (Finder [7.1.1b1?]) *20
gestaltFinderAttr (not listed)
gestaltFinderAttr = 'fndr';
gestaltFinderDropEvent = 0;
gestaltFinderMagicPlacement = 1;
gestaltFinderCallsAEProcess = 2;
gestaltOSLCompliantFinder = 3;
gestaltFinderSupports4GBVolumes = 4;
gestaltFinderHandlesCFMFailures = 5;
font (System [7.0])
(TrueType INIT ext for System 6)
gestaltFontMgrAttr (addition)
gestalt??? = 1; {set with System 7.1}
gestaltDiskCachedFonts? = 2; {Disk Cached Fonts available?}
NOTE:
Inside the Inline Extension 1.0 with KanjiTalk7, which was compiled
with full subroutine names, there is a subroutine called
'DiskChachedFontsAvailable' in an INIT resource which checks bit 2
of the gestaltFontMgrAttr selector response. (Marco Piovanelli)
fpu (System [6.0.4])
gestaltFPUType (addition)
gestalt68040FPU = 3; *2
fs (System [7.0])
gestaltFSAttr (addition)
gestaltHasFileSystemManager = 2; *2
NOTE:
File System Manager (version 1.0a3 according to the INIT resource
name) is installed by the 720K Floppy Disk Formatter, part of the
Hardware System Update 2.0 and later.
fxfr (System [7.0])
gestaltFXfrMgrAttr (additions)
gestaltFXfrMgrMultiFile = 1; {supports FTSend and FTReceive} *11
gestaltFXfrMgrErrorString = 2; {supports FTGetErrorString} *7/11
gval (GestaltValue Glue code)
gestaltValueAddr?
The first time you call NewGestaltValue, the library installs two non-
relocatable blocks in the system heap and the gestalt selector. One of
the blocks is filled with code: it's actually a gestalt function that
implements GestaltValue's shared mechanism. The second block contains
the selectors and values GestaltValue manages. The response returned
by the 'gval' selector is a pointer to the second non-relocatable
block in the system heap. (Marco Piovanelli)
hdwr (System [6.0.4])
gestaltHardwareAttr (additions)
gestaltHasRBV = 2; {RBV} *3
gestaltHasOSS = 5; {OSS} *3
gestaltHasSCSIDMA = 6; {53C80 SCSI DMA} *3
gestaltHasSWIMIOP = 8; {SWIM IOP} *3
gestaltHasSCCIOP = 9; {SCC IOP} *3
gestaltHasFitch = 10; {Fitch memory Controller} *8
gestaltHasIWM = 11; {IWM} *3
gestaltHasPWM = 12; {PWM disk speed buffer} *8
gestaltHasRAMSndBuff = 13; {RAM-based sound buffer} *8
gestaltHasVideoDAConv = 14; {Video D/A Converter} *8
gestaltHasPGC = 15; {PGC (parity control)} *8
gestalt??? = 16; {unknown, found in Speech Mgr ext}
gestalt??? = 17; {unknown, found in Speech Mgr ext}
gestalt??? = 18; {unknown, found in Speech Mgr ext}
gestaltHasSoftPowerOff = 19; {Software PowerOff (since 7.0?)} *2
gestaltHasSonic = 20; {Sonic} *3
gestaltHasSCSI961 = 21; {Int. 53C96 SCSI} *1
gestaltHasSCSI962 = 22; {Ext. 53C96 SCSI} *1
gestaltHasDAFBVideo = 23; {DAFB Video} *3
gestaltHasUniversalROM = 24; {Universal ROM} *17
gestaltHas??? = 27; {set on PowerPC prototype and C660AV,
DSP?, AWAC?}
gestaltHas??? = 30; {set on C660AV, DSP?}
See for more information the TN "M.OV.GestaltSysenvirons" (OV 16).
help (System [7.0])
gestaltHelpMgrAttr (addition)
gestaltHelpMgrExtensions = 1; {help mgr extensions are installed} *19
icon (System? [???])
gestaltIconUtilities (not listed)
gestaltIconUtilities = 'icon';
gestaltIconUtilitiesPresent = 0;
intd (System [7.1])
(System Enabler 111 [1.0])
(System Enabler 121 [1.0])
(System Enabler 201 [1.0])
gestaltInternalDiskAttr?
Returns information about the internal harddisk of PowerBook
computers.
gestaltInternalDiskAttr? = 'intd'; {PB Internal HD attributes}
gestaltHasInternalDisk? = 0; {TRUE if machine has internal HD}
gestaltDiskSpinning? = 1; {TRUE if internal HD is spon up}
kbd (System [6.0.4])
gestaltKeyboardType (additions)
gestaltPwrBookADBKbd = 12; {PowerBook ADB Keyboard} *1
gestaltPwrBookISOADBKbd = 13; {PowerBook ISO ADB Keyboard} *1
gestaltAppleAdjustKeypad = 14, {Adjustable Keypad?} *20
gestaltAppleAdjustADBKbd = 15, {Adjustable ADB Keyboard?} *20
gestaltAppleAdjustISOKbd = 16, {Adjustable ISO ADB Keyboard?} *20
Combinations of System Global KbdType and gestaltKeyboardType values
======================================================================
KbdType gestaltKeyboardType KbdType gestaltKeyboardType
(hex.) (decimal) (hex.) (decimal)
----------------------------------------------------------------------
$03 1 $0F 18
$13 2 $12 19
$0B 3 $13 20
$02 4 $14 21
$01 5 $15 22
$06 6 $16 23
$07 7 $17 24
$04 8 $18 25
$05 9 $19 26
$08 10 $1A 27
$09 11 $1B 28
$0C 12 $1C 29
$0D 13 $1D 30
$0E 14 $1E 31
$10 15 $1F 32
$11 16 $20 33
$0A 17
======================================================================
(Source: from the PTCH 5 resource in the Hardware System Update 2.0
extension.)
NOTE:
The Apple Adjustable Keyboard doesn't have its own gestalt keyboard
type defined with the currently available System Software. It changes
a low memory global but this doesn't change the Gestalt response.
Because of this programs which follow Apple's rules to determine the
keyboard type by using the Gestalt Mgr may not function properly.
This problem is corrected by the Hardware System Update 2.0 and later.
mach (System [6.0.4]) INF
gestaltMachineType (additions)
RELEASED
gestaltQuadra900 = 20; {Macintosh Quadra 900} *1
gestaltPowerBook170 = 21; {Macintosh PowerBook 170} *1
gestaltQuadra700 = 22; {Macintosh Quadra 700} *1
gestaltClassicII = 23; {Macintosh Classic II} *1
gestaltPowerBook100 = 24; {Macintosh PowerBook 100} *1
gestaltPowerBook140 = 25; {Macintosh PowerBook 140} *1
gestaltQuadra950 = 26; {Macintosh Quadra 950} *1
gestaltMacLCIII = 27; {Macintosh LC III}
gestaltPowerBook210 = 29; {Macintosh PowerBook 210}
gestaltMacCentris650 = 30; {Macintosh Centris 650}
gestaltPowerBook230 = 32; {Macintosh PowerBook 230}
gestaltPowerBook180 = 33; {Macintosh PowerBook 180}
gestaltPowerBook160 = 34; {Macintosh PowerBook 160}
gestaltMacQuadra800 = 35; {Macintosh Quadra 800}
gestaltMacQuadra650? = 36; {Macintosh Quadra 650}
gestaltMacLCII = 37; {Macintosh LC II}
gestaltMacPowerBookDuo250 = 38; {Macintosh PowerBook Duo 250}
gestaltMacIIvi = 44; {Macintosh IIvi}
gestaltPerforma600 = 45; {Macintosh Performa 600}
gestaltMacIIvx = 48; {Macintosh IIvx}
gestaltMacColorClassic = 49; {Macintosh Color Classic}
gestaltPowerBook165c = 50; {Macintosh PowerBook 165c}
gestaltMacCentris610 = 52; {Macintosh Centris 610}
gestaltMacQuadra610? = 53; {Macintosh Quadra 610}
gestaltPowerBook145 = 54; {Macintosh PowerBook 145 & 145b}
{145B has few differences with 145}
gestaltMacLC520 = 56; {Macintosh LC 520}
gestaltMacCentris660AV = 60; {Macintosh Centris 660AV}
gestaltPerforma460 = 62; {Macintosh Performa 460}
gestaltPowerBook180c = 71; {Macintosh PowerBook 180c}
gestaltMacQuadra840AV = 78; {Macintosh Quadra 840AV}
gestaltPerforma550 = 80; {Macintosh Performa 550}
gestaltPowerBook165? = 84; {Macintosh PowerBook 165}
gestaltMacintoshTV = 88; {Macintosh TV}
gestaltMacLC475 = 89; {Macintosh LC 475}
gestaltMacQuadra605? = 94; {Macintosh Quadra 605}
Exceptions with systems prior to System 7.1:
gestaltMacLCII = 19; {Macintosh LC & LC II}
{LC has MC68020, LC II has MC68030}
gestaltPowerBook145 = 25; {Macintosh PowerBook 140 & 145}
{processor speed is only difference}
{use GetCPUSpeed from Power Mgr?}
Released unknown
All other released macs and not listed here! I can't keep up with
the new releases... Can you?
Equivalents
Color Classic II = gestaltMacColorClassic? (sold in Japan?)
Performa 200 = gestaltClassicII
Performa 400 = gestaltMacLCII
Performa 405 = gestaltMacLCII
Performa 410 = gestaltMacLCII
Performa 430 = gestaltMacLCII
Performa 450 = gestaltMacLCIII
Performa 460 = gestaltMacLCIII
Performa 466 = gestaltMacLCIII
Performa 467 = gestaltMacLCIII
Performa 475 = gestaltMacLC475
Performa 476 = gestaltMacLC475
Performa 600 = gestaltMacIIvx
Performa 600CD = gestaltMacIIvx
Quadra 660AV = gestaltMacCentris660AV
Workgroup Server 60 = gestaltMacCentris610
Workgroup Server 80 = gestaltMacQuadra800
Workgroup Server 95 = gestaltQuadra950
UNRELEASED
gestalt??? = ??; {unknown, codename Pomona?}
gestalt??? = ??; {unknown, codename BlackBird?}
gestalt??? = ??; {unknown, two PowerBook Duo}
gestalt??? = ??; {unknown, PowerPC 603 PB Duo}
gestalt??? = 43; {unknown, pre-release Tempest/Cyclone}
gestalt??? = 75; {PowerPC prototype}
gestaltMacLC476? = ??; {Macintosh LC 476}
gestaltPowerBook270C? = ??; {Macintosh PowerBook 270c}
gestaltQuadra6100? = ??; {Macintosh Quadra 6100}
gestaltQuadra6500? = ??; {Macintosh Quadra 6500}
gestaltQuadra8500? = ??; {Macintosh Quadra 8500}
gestaltPPC601? = ??; {PowerPC? 601? value 75?}
gestaltPPC604? = ??; {PowerPC? 604?}
Equivalents
Performa 550 = gestaltMacLC520?
PPC Workgroup Server 60 = gestaltQuadra6100?
PPC Workgroup Server 80 = gestaltQuadra6500?
PPC Workgroup Server 95 = gestaltQuadra8500?
NOTES:
The Performa 600 was originally planned to ship as Macintosh IIvm
but the name was changed because users thought 'vm' meant 'Virtual
Memory'. Some system enablers (001, 040, 065 & 201) still contain
that original name.
The Developer Notes (available on ftp.apple.com and on the Developer
CD-ROM Series, amongst others) about Macintosh models provide in
several cases wrong or incomplete information regarding the machine
type returned by the Gestalt Manager.
On Macintosh Performas, the Machine Name STR# resource will always
return the string "Macintosh" (not "Macintosh Performa 450" or
"Performa 450"). On all other Macintoshes, the string will return
the correct name. (Mark Dawson)
All system enablers have a STR# resource -16395 (kMachineNameStrID)
included to replace the one in the System file. In most cases this
resource lists the same Macintosh names as the original one in
System 7.1 and adds the names of the machines the enabler is used for.
Therefore, if you want to display all Macintosh names you can't
rely on this resource anymore. (Rene Ros)
(Main source equivalents and unreleased machines:
MacFacts Two by J.D.S. Babcock, used with permission)
micn (System [6.0.4]) INF
gestaltMachineIcon (addition)
NOTE:
The icon resource ID returned is based on the gestaltMachineType
response which is used as an index into a table. This table of
resource IDs differs with most System Software versions (and
enablers). If you really want to know the icon resource ID of a
machine which is not the current machine you have the following
options:
- Write a GDEF to replace the 'mach' selector, let this GDEF return
the original gestaltMachineType unless a certain selector exists.
Create this selector with the GestaltValue code and make it loop
from 1 to the number of items in the STR# kMachineNameStrID
resource, let the custom GDEF return this as the machine type so
the gestaltMachineIcon selector will use this to look up the icon
resource ID. Then remove the GestaltValue selector and restore the
original gestaltMachineType selector.
- Get the entrypoint of the gestaltMachineIcon GDEF, jump into the
GDEF a few bytes further (and thus skipping the gestalt call using
the gestaltMachineType selector), emulate a genuine call to Gestalt
by setting the A0 (response, the machineType you want) and
D0 (result) registers correct.
- Determine the start of the table, which is located in memory before
the entrypoint of the gestaltMachineIcon GDEF code, and calculate
the offset to the icon resource ID you need. If you want code which
does this, you can contact me (Rene Ros) an I will sent you some
Pascal source code.
(David Greenspon, Michael Hecht and Rene Ros)
misc (System [6.0.5])
gestaltMiscAttr (addition)
gestaltBootGlobals = 1; {Boot Globals} *8
mmu (System [6.0.4])
gestaltMMUType (addition)
gestalt68040MMU = 4; {68040/68LC040 built-in} *2
gestalt??? = 5; {PowerPC prototype MMU}
nubs (System [6.0.4, 6.0.5, 6.0.7, discontinued])
gestaltNuBusSlotCount (not listed)
Returns count of NuBus slots.
gestaltNuBusSlotCount = 'nubs';
os (System [6.0.4, 7.0 and higher])
gestaltOSAttr (addition)
gestalt??? = 9; {set on PowerPC prototype and Q840AV}
gestaltBgndMouseDownSupport = 10; *20
osyv (sysvINIT by T. Tanaka, Apple Computer Japan Inc.) INF
Because of a bug with KanjiTalk 6.0.7 this extension (snippet code,
available on Developer CD-ROM Series) replaces the standard 'sysv'
Gestalt Definition (GDEF) with a corrected one to return $0x0607 and
installs the 'osyv' selector which uses the replaced GDEF. *13
pcxg (System? [???]) *20
gestaltPCXAttr (not listed)
gestaltPCXAttr = 'pcxg';
gestaltPCXHas8and16BitFAT = 0;
gestaltPCXHasProDOS = 1;
ppc (System [7.0])
gestaltPPCToolboxAttr (addition)
The first thing that is confusing is that, unlike other selectors
returning attributes, the responses are not bit values, but bit masks.
This means you simply AND the value with the response to test the bit.
The second thing that is confusing is how to interpret
gestaltPPCToolboxPresent = $0x0000.
What this means is that if the PPC toolbox is present, but has not
been initialised (by calling PPCInit), then gestaltPPCToolboxAttr
returns $0x0000. In reality, PPCInit gets called by the Process
Manager before any applications get launched, so no applications will
actually see this response. (Dave Radcliff)
gestaltPPCToolboxAttr = 'ppc ';
gestaltPPCToolboxPresent = $0x0000; {Requires PPCInit to be called}
gestaltPPCSupportsIncoming = $0x0001; {Deny incoming net requests}
gestaltPPCSupportsOutGoing = $0x0002; {Deny outgoing net requests}
gestaltPPCSupportsRealTime = $0x1000; {Supports real-time delivery}
proc (System [6.0.4])
gestaltProcessorType (addition)
gestalt68040 = 5; *2
NOTE:
The 68LC040 responds as type gestalt68040 but doesn't has a FPU. The
user can swap out the 68LC040 and put in a real 68040 with FPU, so
just checking the machineType or the processorType isn't enough.
(Dave Radcliff)
qd (System [6.0.4])
gestaltQuickDrawVersion (addition)
Possible Combinations of ROM Versions and System Software Versions
======================================================================
ROM Class System Version Gestalt Value
----------------------------------------------------------------------
Black-and-white class < 7.0 gestaltOriginalQD
(ROM < 256K) >= 7.0 gestaltOriginalQD and
gestaltSystemVersion >= $0700
Color QD class < 7.0, no INITs gestalt8BitQD
(ROM = 256K) 6.0.3/6.0.4 and gestalt32BitQD
32-Bit QD INIT 1.0
6.0.5-6.0.8 and gestalt32BitQD12
32-Bit QD INIT 1.2
>= 7.0 gestalt32BitQD13
ci class 6.0.4 gestalt32BitQD + 1
(ROM > 256K) 6.0.5-6.0.8 gestalt32BitQD12
>= 7.0 gestalt32BitQD13
======================================================================
(Source: Develop Issue 14, June 1993)
NOTE:
gestalt32BitQD11 is never returned and gestalt32BitQD + 1 means
$0x0201 as respone value and doesn't have a constant defined.
qdrw (System [7.0])
gestaltQuickDrawFeaturesAttr (not listed)
gestaltQuickDrawFeaturesAttr = 'qdrw'; *2
gestaltHasColor = 0; *2
gestaltHasDeepGWorlds = 1; *2
gestaltHasDirectPixMaps = 2; *2
gestaltHasGrayishTextOr = 3; *2
NOTE:
There is a bug in the 'qdrw' selector that causes it to report that
Color QuickDraw is always present, even on machines that don't support
it. Apple has acknowledged this bug on AppleLink. (Chris Wysocki)
Use SysEnvirons instead or try this:
long qdVersion = 0;
gHasColorQuickDraw = (Gestalt(gestaltQuickdrawVersion,&qdVersion)
== noErr) && (qdVersion >= gestalt8BitQD);
rbv (System [6.0.4, discontinued?]) *20
gestaltRBVAddr (not listed)
gestaltRBVAddr = 'rbv ';
rtmr (System? [???])
gestaltRealtimeMgrAttr (not listed)
Returns information about the Realtime Manager.
gestaltRealtimeMgrAttr = 'rtmr';
gestaltRealtimeMgrPresent = 0;
rsrc (System [should work since 7.0?])
gestaltResourceMgrAttr (addition)
gestalt??? = 1; {unknown}
NOTE:
Under System 7, bit 0 that tells if you have partial resource support
doesn't work right. The selector is undefined under System 7.0 and
7.0.1 even though the partial resource calls are available. This has
been acknowledged by Apple.
(Michael Hecht, Quinn)
sccr (System [6.0.4, discontinued]) *20
gestaltSCCReadAddr (not listed)
Returns the address of SCC read ports.
gestaltSCCReadAddr = 'sccr';
sccw (System [6.0.4, discontinued]) *20
gestaltSCCWriteAddr (not listed)
Returns the address of SCC write ports.
gestaltSCCWriteAddr = 'sccw';
scri (System [6.0.4])
gestaltScriptMgrVersion (addition)
Version numbers for the Script Manager
======================================================================
System Version Script Mgr Script Mgr Version
(older ROMs)+ (newer ROMs) format
----------------------------------------------------------------------
6.0.3 and earlier <= $20F N.A. binary
6.0.4 Roman $211 $215 "
6.0.4 non-Roman $212 $216 "
6.0.5 $213 $217 (=2.23) "
6.0.7 $230 $231 BCD
J-6.0.7.1 $230 $231 "
6.0.8 $230 $231 "
6.1 non-Roman $240 $241 "
7.0 $700 $700 "
7.0.1 Roman $701 $701 "
7.0.1 non-Roman $701 $701 "
7.1 $710 $710 "
+ Plus,SE,II,IIx,IIcx,SE/30,Classic
======================================================================
(Source: Inside Macintosh Text)
slot (System [6.0.4, 6.0.5, discontinued])
gestaltSlotAttr (not listed)
Returns information about the Slot Manager.
gestaltSlotAttr = 'slot';
gestaltSlotMgrExists = 0;
gestaltNuBusPresent = 1;
gestaltSESlotPresent = 2;
gestaltSE30SlotPresent = 3;
gestaltPortableSlotPresent = 4;
slt1 (System [6.0.4, 6.0.5, discontinued])
gestaltFirstSlotNumber (not listed)
Returns first slot number.
gestaltFirstSlotNumber = 'slt1';
sltc (System [6.0.8?])
gestaltNuBusConnectors (addition)
NOTE:
This selector does not return information about the Macintosh IIsi
slot.
snd (System [6.0.4])
gestaltSoundAttr (additions)
gestaltSoundReserved = 2;
gestaltPlayAndRecord = 6; {built-in hardware can play and}
{record simultaneously} *19/20
gestalt16BitSoundIO = 7; *20
gestaltStereoInput = 8; *20
gestaltLineLevelInput = 9; *20
gestaltSndPlayDoubleBuffer = 10; *20
gestaltMultiChannels = 11; {multiple channel support} *19/20
gestalt16BitAudioSupport = 12; *20
stdf (System [7.0])
gestaltStandardFileAttr (additions by Easy Open)
gestaltStandardFileTranslationAware = 1; *12/20
gestaltStandardFileColorIcons = 2; *12/20
sysa (System [7.1 on PowerPC prototype?]) *20
gestaltSysArchitecture (not listed)
gestaltSysArchitecture = 'sysa';
gestalt68k = 1;
gestaltPowerPC = 2;
sysv (System [6.0.4]) INF
gestaltSystemVersion (listed in IM VI; question)
Returns the version number of currently active System file in BCD.
Is it correct system 6.0.8 returns $0x0607? Can you determine if it is
actually 6.0.8 in another way?
The hard way to change the result value is to change the PTCH resource
with ID# 0 in the System file. Change the word $07 at offset $0x00ED
to $08.
System Resource Offset Data
Version Type ID#
6.0.4 PTCH 0 0x005E 0604
6.0.8 PTCH 0 0x00EC 0607
7.0 PTCH 0 0x056E 0700
7.0.1 PTCH 0 0x0578 0701
7.1 PTCH 0 0x057C 0710
NOTES:
In addition KanjiTalk 6.0.7 (Japanese System) and other non-Roman
versions return $0606. See the 'osyv' selector.
System J-6.0.7.1 returns $0609
There are some system versions (like International System 6.0.8.1 or
7.0.1.1) which just return the normal version number, i.e. 6.0.8 and
7.0.1.
tabl (System [6.0.4])
gestaltSelectorTable (not listed)
Returns a handle to the Gestalt selector table itself.
gestaltSelectorTable = 'tabl';
NOTE:
The Gestalt selector table is kept in a resizable block in the system
heap. The last item in the table is a dummy entry (INVALID), marked by
a selector OSType(MaxLongInt). (Marco Piovanelli, he has also some
snippet Pascal code to list all selectors)
term (System [7.1])
gestaltTermMgrAttr (addition)
gestaltTermMgrErrorString = 2; *20
tsmv (System [7.1])
gestaltTSMgrVersion (not listed, not even in IM Text) *18
Returns Text Services Manager version in BCD.
gestaltTSMgrVersion= 'tsmv';
vers (System [6.0.4])
gestaltVersion (addition)
The PowerPC prototype, C660AV and Q840AV use Gestalt Manager version 4.
via1 (System [6.0.4, discontinued])
gestaltVIA1Addr (not listed)
Returns the address of VIA 1.
gestaltVIA1Addr = 'via1';
via2 (System [6.0.4, discontinued])
gestaltVIA2Addr (not listed)
Returns the address of VIA 2.
gestaltVIA2Addr = 'via2';
vm (System [6.0.4])
gestaltVMAttr (replacement)
gestaltVMPresent = 0; {set; virtual memory present}
gestaltVMNotInstalled = 0; {clear; virtual memory not present}
wma. (System [7.0])
(Responder ext [2.0?])
gestaltResponderAttr (not listed)
Returns information about the Workstation Management Agent aka
Responder.
gestaltResponderAttr = 'wma.';
gestaltResponderPresent = 0;
xttt (System [6.0.8])
gestaltExtToolboxTable (not listed)
Returns the base address of the Extended Toolbox trap table.
gestaltExtToolboxTable = 'xttt';
Apple Additional Software
-------------------------
arb (Serial Port Arbitrator ext [1.0], part of AppleTalk Remote Access)
gestaltArbitorAttr (not listed) *9
Returns information about the Serial Port Arbitration.
gestaltArbitorAttr = 'arb ';
gestaltSerialArbitrationExists = 0;{Serial Port Arbitration installed}
aucd (Audio CD Access ext [4.0], part of Apple CD-ROM Software) *16
gestaltAudioCDAccessVersion? (not listed)
Returns Audio CD Access version in BCD.
gestaltAudioCDAccessVersion? = 'aucd';
NOTE: The returned version is obtained from 'vers' resource ID# 1.
cltn (QuickDraw GX [1.0])
gestaltCollectionMgrVersion (not listed)
Returns the version of the Collection Manager as NumVersion.
gestaltCollectionMgrVersion = 'cltn';
NOTE:
The Collection Manager is a set of routines for maintaining tagged
collections of data; GX uses it to support the "tags" that you can
attach to GX objects, for holding special data, including
user-defined data. (Lawrence D'Oliveiro)
cmtc (ColorSync ext [?])
gestaltColorMatchingVersion (not listed)
According to the documentation, the value returned by this selector is
$0x0100 if ColorSync is installed under System 6.0.7, or $0x0110 if
ColorSync is installed under System 7. (Lawrence D'Oliveiro)
gestaltColorMatchingVersion = 'cmtc';
cpkr (Color Picker ext [2.0?], part of ColorSync Software)
gestaltColorPickerMgrAttr (not listed)
Returns information about the Color Picker Manager.
gestaltColorPickerMgrPresent? = 0?; (ColorPicker Mgr Present}
(Marco Piovanelli, Lawrence D'Oliveiro)
NOTE:
Extension version 2.0a4 returns a response ($0x0001) which is
according to the info above. Version 2.0a5 however returns $0x0100, is
this an error?
drag (Macintosh Drag and Drop ext [1.0])
gestaltDragMgrAttr *22
Returns information about the Drag Manager.
gestaltDragMgrAttr = 'drag'; {Drag Manager attributes}
gestaltDragMgrPresent = 0; {Drag Manager is present}
gfxa (QuickDraw GX [1.0])
gestaltGraphicsAttr (not listed)
Returns information about the Graphics.
gestaltGraphicsAttr = 'gfxa'; { graphics attributes bits }
gestaltGraphicsIsDebugging = 0;
gestaltGraphicsIsLoaded = 1;
NOTE:
The non-debugging version always seems to return 0 from this selector,
even when a program using GX is currently running.
grfx (QuickDraw GX ext [1.0])
gestaltGraphicsVersion (not listed)
Returns the version of the Graphics as INTEGER.
gestaltGraphicsVersion = 'grfx'; {Gestalt version selector}
gestaltCurrentGraphicsVersion = 12; {supposed value returned}
NOTE:
In fact the 1.0b1 GX returns a value of 13 for this selector.
hscd (High Sierra File Access ext [4.0], part of Apple CD-ROM Software) *16
gestaltHighSierraFAVersion? (not listed)
Returns High Sierra File Access version in BCD.
gestaltHighSierraFAVersion? = 'hscd';
NOTE: The returned version is obtained from 'vers' resource ID# 1.
icmp (QuickTime ext [1.0])
gestaltCompressionMgr (not listed)
Returns Compression Manager version as Integer
gestaltCompressionMgr = 'icmp'; {determines if Image Compression} *6
{manager is available}
kids (At Ease [1.0])
??? (not listed)
Returns a handle to a structure holding information about At Ease.
The official constant is not defined but the following code was
published by Apple *21:
#define kAtEaseGestalt 'kids'
typedef struct {
short giVersion; /* structure version */
short giIsActive; /* true if at ease is currently running */
short giAutoCreateAlias; /* if true then auto create alias */
short giRequestFloppy; /* if true then request floppy on new
saves */
short giStacksAreApps; /* if true then HyperCard stacks are shown
with applications */
FSSpec giItemsLocation; /* location of the At Ease Items folder */
} GestaltRec, *GestaltRecPtr, **GestaltRecHand;
kpcd (Apple Photo Access ext [1.0], part of Apple CD-ROM Software) *16
gestaltApplePhotoAccessVersion? (not listed)
Returns Apple Phote Access version in BCD.
gestaltApplePhotoAccessVersion? = 'kpcd';
NOTE:
The above is what the documentation says. However it seems to return
always $FFFFFF7 as response.
mess (QuickDraw GX [1.0])
gestaltMessageMgrVersion (not listed)
Returns the version of the Message Manager as NumVersion.
gestaltMessageMgrVersion = 'mess';
NOTE:
The Message Manager is an implementation of object-oriented-style
message passing within an inheritance hierarchy, that can be used from
non-OO languages.
It is used by the GX printing system, to allow the customization of
printing behaviour by letting applications (and developers of printing
extensions) intercept messages sent to the printer driver.
(Lawrence D'Oliveiro)
mtcp (MacTCP cp [1.1])
gestaltMacTCPAttr? (not listed) *5
Returns the version of MacTCP, if opened, as an index-value.
Response Version
1 1.1
2 1.1.1
3 2.0
If MacTCP is not opened a value of 0 is returned.
No constants are defined in the documentation.
gestaltMacTCPAttr? = 'mtcp';
gestaltMacTCPPresent? = 0;
gestaltMacTCP11? = 1;
gestaltMacTCP111? = 2;
gestaltMacTCP2? = 3;
pmgr (QuickDraw GX [1.0])
gestaltPrintingMgrVersion (not listed)
Returns the version of the QuickDraw GX Printing Manager as NumVersion.
gestaltPrintingMgrVersion = 'pmgr';
qtim (QuickTime ext [1.0])
gestaltQuickTime (addition to IM QuickTime)
Returns QuickTime version as NumVersion.
gestaltQuickTime = 'qtim'; {Movie Toolbox Availability}
NOTES:
The returned version is obtained from 'vers' resource ID# 1.
If you install QuickTime under System 6, a major portion of the Alias
Manager and FSSpec support is also added. But, QT doesn't implement
the Gestalt selectors because the implementation is not complete. You
must check for either Alias Mgr or QuickTime. (Michael Hecht)
If QuickTime is present, assume you have an Alias Manager, subject to
some limitations (NewAliasMinimalFromFullPath not present). Nearly all
the FSSpec calls are available (except FSpExchangeFiles) in System 6
when QuickTime is installed. See for more information Technical Note
M.QT.MovieTB.Q&As (QT 510) and IM QuickTime.
scra (Easy Open ext? [1.0]) *12
gestaltScrapMgrAttr (not listed)
Returns information about the Scrap Manager.
gestaltScrapMgrAttr = 'scra';
gestaltScrapMgrTranslationAware = 0;
gestaltTranslationMgrHintOrder = 1; *20
snhw (System? [???])
(Sound Manager ext [3.0])
gestaltSoundHardware (not listed)
gestaltSoundHardware = 'snhw';
gestaltASC = 'asc ';
gestaltDSP = 'dsp ';
gestaltClassicSound = 'clas';
gestaltAWAC? = 'awac'; {returned on PowerPC prototype}
strm (Remote Access Aliases [1.0], part of AppleTalk Remote Access)
gestaltRemoteAccessAttr *9 (not listed)
gestaltRemoteAccessAttr = 'strm';
gestaltRemoteAccessExists = 0; {RA Connection Interface is available}
teat (Macintosh Drag and Drop ext [1.0])
gestaltTEAttr *22
Returns information about the functions and capabilities of TextEdit.
gestaltTEAttr = 'teat'; {TextEdit attributes}
gestaltTEHasGetHiliteRgn = 0; {TEGetHiliteRgn present}
thds (Thread Manager ext [1.1]) *15
(QuickDraw GX ext [1.0?])
gestaltThreadAttr (not listed)
Returns information about the Thread Manager.
gestaltThreadAttr = 'thds'; {Thread Manager attributes}
gestaltThreadsPresent = 0; {bit true if Threads present}
gestaltSpecificMatchSupport = 1; {bit true if Thread Mgr supp.}
{exact match creation option}
ttsc (Text-To-Speech Manager ext [1.0?])
gestaltSpeechAttr (listed in Speech Manager documentation)
Returns information about the Speech Manager.
gestaltSpeechAttr = 'ttsc'; {Text-To-Speech Manager attributes}
gestaltSpeechMgrPresent = 0; {bit true if Speech Mgr present}
ufox (Foreign File Access ext [4.0], part of Apple CD-ROM Software) *16
gestaltForeignFAVersion? (not listed)
Returns Foreign File Access version in BCD.
gestaltForeignFAVersion? = 'ufox';
NOTE: The returned version is obtained from 'vers' resource ID# 1.
xlat (Easy Open ext [1.0]) *12
gestaltTranslationAttr (not listed)
Returns information about the Translation Manager.
gestaltTranslationAttr = 'xlat';
gestaltTranslationMgrExists = 0; {Translation Manager present}
Third Parties Software
----------------------
!SYM (Symbionts ext [1.0] by B. Kevin Hardman)
gestaltSymbiontsTable
Returns a pointer to a structure containing the size of the System
Heap before and after loading the INITs.
gestaltSymbionts = '!SYM';
ApoL (Apollo ext [1.0] by Jeremy Roussak)
gestaltApolloTable
Returns a handle to an instance of a structure.
See for more information the Programmers' Information chapter in the
Apollo 1.0 documentation. (Jeremy Roussak)
gestaltApolloTable = 'ApoL';
AuBu (AutoBuild ext [1.0] by Rene G.A. Ros)
gestaltAutoBuildVersion
Returns AutoBuild version as NumVersion.
NOTE: The returned version is obtained from 'vers' resource ID# 1.
BIFF (QM Biff ext [1.0] by Patrick C. Beard)
Determines if there is mail (QuickMail). The response long word is 1
if you have mail, and 0 if you don't.
CKI3 (AETracker cp [3.0] by C.K. Haun)
gestaltAETrackerAddr
This selector returns a pointer to the external interface routine for
AETracker, details of which are in the AETracker interface guide.
(C.K. Haun)
gestaltAETrackerAddr = 'CKI3';
FrcP (Decor cp [1.0] by Francois Pottier)
gestaltDecorAddr
Returns a pointer to a structure which can be read or changed, and
enables programmers to change the picture on the desktop.
See for more information on how to use this structure the
documentation included with Decor 1.0 or later.
NOTE: The c is actually the option-c character (ASCII $8D).
Gast (Gestalt! appl [2.9.2] by Roland Mansson)
gestaltGestaltVersion
Returns the version of the application as NumVersion.
GestaltValue is removed when application quits. Just for fun.
(Roland Mansson)
NOTE: The a is actually the option-u/a character (ASCII $8A).
GTLK (GestaltTalk code by Brigham Stevens, Apple Computer DTS)
Snippet code, see documentation. (See chapter 'Related Software'
for availability).
GWat (GestaltWatch ext [1.0] by Scot Bronson)
Returns pointer to structure where collected information is stored.
NOTE: In development, not yet available.
Lnch (Network Time cp [2.0] by Pete Resnick)
(First Launch Gestalt INIT code resource, by Pete Resnick)
gestaltFirstLaunchAttr
Returns info on whether the _Launch trap has been called by the
System.
Bit 0 of the response, gestaltFirstLaunchDone, indicates whether the
_Launch trap has been called since startup of the machine. All other
bits are reserved and currently 0. Even if not installed at INIT time,
Network Time will install the Gestalt selector if it is not already
there when the control panel is opened and automatically set
bit 0 to 1.
68000 assembler source code is available for the INIT that installs
the selector, and INIT resource -4048 from Network Time may be
stolen (and renumbered as desired) and used in any INIT file as
desired. (Pete Resnick)
gestaltFirstLaunchAttr = 'Lnch'; {_Launch information)
gestaltFirstLaunchDone = 0; {_Launch called, INIT time over}
NIPX (Novell MacIPX cp [1.0.1] by Novell Inc.)
gestaltNovellIPXVersion
Returns the version of MacIPX as NumVersion.
If the selector returns an error (i.e. no such selector?) then MacIPX
is not installed. If the selector returns 0L then MacIPX is installed
but the driver is not open. Any other values is the version.
(Duane Murphy)
gestaltNovellIPXVersion = 'NIPX';
NMBT (Attention cp [0.6] by Marco Piovanelli)
gestaltAttentionAddr
The response value returned is a pointer to a read-only parameter
block in the system heap.
See for more detailed information the ReadMe file included.
NTim (Network Time cp [2.0] by Pete Resnick)
Returns information private to Network Time.
PWRS (PwrSwitcher cp [1.0] by David B. Lamkins)
gestaltPwrSwitcherTable
Returns a pointer to a private data structure (undocumented).
SDdD (Shutdown Delay cp [2.0.1] by Alessandro Levi Montalcini)
kSDDelayCreator
Returns a pointer to a data structure described in the documentation
included with Shutdown Delay.
kSDDelayCreator = 'SDdD';
NOTE: The d is actually the option-shift v character (ASCII $D7).
SLip (StuffIt SpaceSaver ext [1.0?] by Aladdin Systems, Inc.)
gestaltStuffItSpaceSaverAddr
Returns the address of the SpaceSaver "command module" which allows
developers to access all the functions of SpaceSaver.
(Leonard Rosenthol)
gestaltStuffItSpaceSaverAddr = 'SLip';
TMON (TMON Pro [3.0] by ICOM Simulations, Inc.)
The value returned is a pointer to a Monitor information block. *14
(Scott Bronson)
YeHa (SpeedyFinder7 cp [1.5.4?-1.5.8m] by Victor Tan)
The structure to which the _Gestalt selector refers changes almost
invariably from version to version of SF7. Should someone work out
parts of the structure of the selector keep in mind that it will
almost certainly change in the next minor release and definitely with
the next major release. (Victor Tan)
Unknown Gestalt Selector Codes
==============================
The following sections list selector codes of which the meaning is unknow.
Apple System Software
---------------------
aint (System? [???])
NOTE: Returns 2 on a C660AV and Q840AV.
ascr (AppleScript ext [1.0])
gestaltAppleScriptAttr?
gestaltAppleScriptAttr? = 0; {AppleScript present?}
ascv (AppleScript ext [1.0])
gestaltAppleScriptVersion?
Returns the version of AppleScript as NumVersion?
bast (System [7.1P])
batt (System Enabler 111 [1.0])
(System Enabler 121 [1.0])
(System Enabler 201 [1.0])
brcn (Screen? cp [1.0?] on Color Classic)
brcN (Energy Save cp [1.0?], part of Monitor Energy Saver)
BSDa (CloseView cp [???], by Berkeley Systems, Inc.)
gestaltCloseViewAttr? (not listed)
Returns information about the CloseView Control Panel.
gestaltCloseViewAttr? = 'BSDa';
gestaltCloseViewOn? = 0;
bugy (32-bit System Enabler [1.0])
(Hardware System Update ext [1.0])
(Sound Manager ext [3.0])
(System enabler 065)
gestaltEnablerAttr?
gestaltEnablerAttr? = 'bugy'; ?
gestaltEnablerEgretDispatchPatch? = 0; {these correct the system}?
gestaltEnablerEgretTimePatch? = 1; { clock and modem perf.}?
gestalt??? = 2; {unknown, Hardware Upd.}
gestaltEnablerEgretTickHandlerPatch? = 3; { see bit 0 & 1}?
gestalt??? = 4; {unknown, Hardware Upd.}
gestaltEnablerSCSIPatch? = 5; {floppy drive fixed}?
gestalt??? = 6; {unknown, Hardware Upd.}
gestaltEnabler32bit? = 7; {32-bit enabler present}?
gestalt??? = 9; {unknown, Sound Mgr 3.0}
gestalt??? = 11; {unknown, Hardware Upd.}
gestalt??? = 12; {unknown, Hardware Upd.}
gestalt??? = 13; {unknown, Hardware Upd.}
gestalt??? = 14; {unknown, Hardware Upd.}
gestalt??? = 15; {unknown, Hardware Upd.}
gestalt??? = 16; {unknown, Hardware Upd.}
gestaltEnablerKeyboardPatch? = 17; {corrects Adjustable Kbd
gestaltKeyboardType response?}
gestalt??? = 18; {unknown, Hardware Upd.}
WARNING:
These are ALL guesses. Well not entirely, I used the ResEdit CODE
Editor to peek into the 32-bit System Enabler and the Hardware System
update. Please check if I'am right. You should be able to find answers
in the INIT resource of the Hardware Update and the names of the PTCH
resources in version 1.0 were also useful...
The System Enablers (for new Macintosh models) don't seem to install
or change any Gestalt selector to indicate their presence.
bugz (System (Tuna Helper INIT rsrc) [7.0]/Tune-up ext)
cfmg (System [7.1 on PowerPC prototype])
cput (System [7.1 on PowerPC prototype])
dude (System Enabler 111 [1.0])
(System Enabler 121 [1.0])
(System Enabler 201 [1.0])
dudi (System Enabler 111 [1.0])
(System Enabler 121 [1.0])
(System Enabler 201 [1.0])
fdrs (Finder [7.1.1b1?], part of AOCE Developer's Kit)
Installed by Finder extension?
fnd (Finder [7.1.1b1?], part of AOCE Developer's Kit)
Installed by Finder extension?
fnd? (Finder [7.1.1b1?], part of AOCE Developer's Kit)
Installed by Finder extension?
fnda (Finder [7.1.1b1?], part of AOCE Developer's Kit)
NOTE: The a is actually the option-a character (ASCII $8C).
FNDR (Finder [7.1.1b1?], part of AOCE Developer's Kit)
Installed by Finder extension?
fnd* (Finder [7.1.1b1?], part of AOCE Developer's Kit)
Installed by Finder extension?
NOTE: The * is actually the shift-6 character (ASCII $F6).
gntz (System [7.1 on PowerPC prototype])
hcsl (Finder [7.1.1b1?], part of AOCE Developer's Kit)
idsp (???)
port (System Enabler 111 [1.0])
(System Enabler 121 [1.0])
(System Enabler 201 [1.0])
scsi (System [7.1?])
NOTE: Returns 3 on PowerPC prototype and Centris 660AV
shal (System [7.1?])
NOTE: Returns 2 on PowerPC prototype and 1 on Centris 660AV
udsk (System [7.1 on PowerPC prototype])
udsv (System [7.1 on PowerPC prototype])
vmbs (System, Virtual Memory enabled [7.0])
gestaltVMBackingStoreRef? (not listed)
Returns the file reference number of the Virtual Memory storage file.
gestaltVMBackingStoreRef? = 'vmbs';
vmcl (System, VM on [7.0])
OSType(7) (System [6.0.4])
Returns LongInt('carl') and a result code of noErr.
OSType(13) (System [6.0.4])
Returns LongInt('bbmc') and a result code of noErr.
Apple Additional Software
-------------------------
3615 (Express Modem cp [1.0], part of Express Modem Software)
admn (AppleShare Admin appl [3.0])
gestaltASAdminAttr?
gestaltASAdminAttr? = 'admn';
gestaltASAdminPresent? = 0;
afps (AppleShare File Server? app? [4.0?])
Bit 0 and 16 set.
asps (AppleShare Print Server appl [3.0])
gestaltASPrintServerAttr?
gestaltASPrintServerAttr? = 'asps';
gestaltASPrintServerPresent? = 0;
bART (MacCheck app [1.0])
BaRT (MacCheck app [1.0])
comp (QuickDraw Font Plus ext [???], part of the KanjiTalk 7.1)
NOTES:
The name "QuickDraw Font Plus" is translated from Japanese and may be
translated differently by Apple Computer, Inc.
I think 'comp' stands for 'composite', as the INIT contains patches to
the Font Manager needed to handle 'composite font suitcases'.
(Marco Piovanelli)
doub (WorldScript II ext [???], part of KanjiTalk7)
gestaltDoubleByteScript?
This selector seems to be installed by WorldScript II (the
System 7.1 ext needed to handle double-byte scripts like Japanese,
Korean and Traditional Chinese).
intD (??? [???])
NOTE:
This is a mystery selector. It isn't installed by any software, as
far as I know, but the Finder 7.1 checks for this selector in certain
situations. (Marco Piovanelli)
futr (ThreadsINIT ext [2.0?], part of Threads Package)
gFax (Fax Extension ext [1.1?], part of Express Modem Software)
hgfd (AppleShare File Server appl [3.0])
gestaltASFileServerAttr?
gestaltASFileServerAttr? = 'hgfd';
gestaltASFileServerPresent? = 0;
mash (System [7.1P?]/At Ease [1.0?])
mfdr (At Ease [1.0])
Remt (AutoRemounter cp [???])
slnk (MNPLinkTool? [1.0], part of AppleTalk Remote Access)
sndx (Sound Manager ext [3.0]?)
gestaltSoundMgrAttr?
gestaltSoundMgrAttr? = 'sndx'?;
gestaltSoundMgrPresent? = 0?
thng (ThreadsINIT ext [2.0?], part of Threads Package)
thrd (ThreadsINIT ext [2.0?], part of Threads Package)
tmTE (Inline Extension ext [1.0], part of KanjiTalk7)
gestaltInlineExtensionAttr?
Returns information about the Inline Extension, if present.
gestaltInlineExtensionAttr? = 'tmTE';
gestaltInlineExtensionPresent? = 0;
tmTV (Inline Extension ext [1.0], part of KanjiTalk7)
gestaltInlineExtensionVersion?
Returns the version of the Inline Extension as BCD (?).
gestaltInlineExtensionVersion? = 'tmTV';
Third Parties Software
----------------------
Especially the Third Party selectors may change with every new release and
are therefore only listed in the 'known selectors' part when the author has
described the structure in the documentation or by email to me.
AClk (AutoClock Extension ext [1.3?] by Jean-Pierre Gachen)
ADex (AfterDark [2.0?] by Berkeley Systems, Inc.)
NOTE:
Not installed by AfterDark but the GDEF indicates it is able to return
a response.
ADfd (AfterDark [2.0?] by Berkeley Systems, Inc.)
NOTE:
Not installed by AfterDark but the GDEF indicates it is able to return
a response.
ADii (AfterDark [2.0?] by Berkeley Systems, Inc.)
NOTE:
Not installed by AfterDark but the GDEF indicates it is able to return
a response.
ADr2 (AfterDark [2.0?] by Berkeley Systems, Inc.)
NOTE:
Not installed by AfterDark but the GDEF indicates it is able to return
a response.
ADRC (DDExpand appl [3.7.7?] by Fifth Generation Systems)
ADrk (AfterDark [2.0?] by Berkeley Systems, Inc.)
AP05 (RapidLock cp or RapidTrak cp [1.1], part of RapidTrak software by
by Insignia Solutions Inc.
AP17 (???)
ApWi (ApplWindows cp [2.0?] by Hiro Yamamoto)
aYmm (AfterDark [2.0?] by Berkeley Systems, Inc.)
AzNe (NameView cp [2.7?] by AStar Technologies, Inc.)
A–Tr (Trapper ext [1.0?] by Alessandro Levi Montalcini)
bMRN (Super Boomerang cp [4.0?] part of NOW Utilities 4.0.1p package
by NOW Software)
CHSR (ChooserUser [1.2?] by Maurice Volaski)
DDAD (AutoDoubler cp [1.0?] by Fifth Generation Systems, Inc.)
DD37 (DiskDoubler [3.7] by Fifth Generation Systems, Inc.)
DFlh (DiskFlash cp [1.0] part of ALSoft Power Utilities by ALSoft, Inc.)
Dpth (DepthMaster cp [1.0] by Victor Tan)
DWG! (Volume Menu cp [1.0], by David Gladstone, Chris Burns, Julian Harris)
EM20 (Extensions Manager cp [2.0] by Ricardo Batista)
ESCa (Escapade cp [1.0?] by Christopher R. Wysocki)
ESOC (Serial of Champions ext [???] by Mike Throckmorton)
Extn (NOW Startup Manager cp [4.0?] part of NOW Utilities 4.0.1p package
by NOW Software)
Fie (Icon7 ext [???] by Inline Designs)
gestaltIcon7?
fmci (FinderMenu INIT ext [1.0], part of UserLand's Frontier Runtime
package)
fPth (FinderPaths cp? [???])
NOTE: The f is actually the option-f character (ASCII $C4).
FtCg (FontPatchin cp [2.0?] by Keisuke Hara)
fWmM (Super Boomerang cp [4.0?] part of NOW Utilities 4.0.1p package
by NOW Software)
GtOp (MenuExtend cp [1.0], part of ALSoft Power Utilities by ALSoft, Inc.)
gV00 (PowerPort cp? [???])
gV01 (PowerPort cp? [???])
gV02 (PowerPort cp? [???])
gV03 (PowerPort cp? [???])
gV04 (PowerPort cp? [???])
He20 (Helium cp [1.0?] by Robert L. Mathews)
HPBG (HP Background ext [3.0?] by Hewlett-Packard Company)
GDEF always returns value 1.
HtLk (Reference Link ext [1.0] by James W. Walker)
iHnd (Invisible Hand cp [1.0] by Carl Mauer)
NOTE:
Because this cp patches the _Random trap you can use this selector to
determine its presence and refuse to continue.
Intj (Interjection ext [???])
JAiN (Rival cp by Inline Designs)
gestaltRival
NOTE: The i is actually the option-u/i character (ASCII $95).
jsm1 (???)
JXNM (NowMenus cp [4.0?] part of NOW Utilities 4.0.1p package
by NOW Software)
KBCF (Easy KEYS cp [1.5] by Kerry Clendinning)
KBCM (???)
LFnt (Dialog View cp [???], formerly List Font cp by James W. Walker)
LxRZ (???)
MClk (SuperClock! [4.0] by Steve Christensen)
MJC& (AutoMenus II cp [???] by Michael Conrad)
MV10 (TearOFF cp [???] by Bad Boys' Software)
NGst (NokNok cp [1.0?])
NkNk (NokNok cp [1.0?])
NowT (NOW Toolbox ext [4.0?] part of NOW Utilities 4.0.1p package
by NOW Software)
PBUf (???)
PBUt (???)
PRT+ (PrintAid [0.9?] by James W. Walker)
QRef (QuickRef ext? [1.0] by Scott Bronson)
RQDC (DropCheck cp [???] by Ronald B. Queloz)
SAVC (AfterDark [2.0?] by Berkeley Systems, Inc.)
(DarkSide of the Macintosh [4.0] by Tom Dowdy)
SAVR (AfterDark [2.0?] by Berkeley Systems, Inc.)
(DarkSide of the Macintosh [4.0] by Tom Dowdy)
Returns one (1) if screensaver is inactive, other values observed are
$0x0017 and $0x001B.
SEcl (ScreenEclipse cp [1.0], part of ALSoft Power Utilities by
ALSoft, Inc.)
SFun (SF Windows [1.0] by Damon Cokenias)
SFwd (Open-wide cp [3.0?] by James W. Walker)
SLi2 (StuffIt SpaceSaver ext by Aladdin Systems, Inc. ?)
ST20 (Snap-To cp [2.0?] by Trevden Sherzell)
STYH (StayHere! cp [2.0?] by Nobuhiro Miyatake)
Tmon (TMON Pro cp? [3.0] by ICOM Simulations)
UlOn (UndelineEnabler ext [2.0?], part of FontPachin package by Keisuke Hara)
See also FtCg selector.
View (StuffIt Viewer Engine [???] by Aladdin Systems Inc.)
gestaltViewerEngine
XTND (not installed by any software)
NOTE:
Is used in some code to check if XTND engine is present. However it is
never installed, so supposedly it is meant for future use. Like a
built-in XTND engine in the System Software? When the selector is
installed all operations are dispatched through trap $ABF4 otherwise
the library provides the code. (Marco Piovanelli)
WREO (Replace Existing Options cp [???] by Jonathon Summers)
NOTE: The W is actually the option-w character (ASCII $B7).
Wttf (TeachText7.0 Font ext [???] by Jonathon Summers)
NOTE: The W is actually the option-w character (ASCII $B7).
*Men (OtherMenu ext [1.0b16?, discontinued?] by James W. Walker)
Gestalt Manager Calls
=====================
All standard calls to the _Gestalt or _GestaltValueDispatch trap are listed
in this chapter.
Gestalt Manager Routines
------------------------
The CallSelectorFunctionProc and NewSelectorFunctionProc functions were
listed in the GestaltEqu.h file on E.T.O. #12 CD-ROM but not yet fully
documented. Sorry, for mixing Pascal and C source, I will convert
everything to C when I know enough about it and have the time.
FUNCTION Gestalt (selector: OSType; VAR Response: LongInt): OSErr;
Available since System 6.0.4.
Trap Macro
_Gestalt ($A1AD)
Registers on entry D0: selector code
Registers on exit A0: response
D0: result code
Result codes
noErr 0 No error
gestaltUnknownErr -5550 Could not obtain the response
gestaltUndefSelectorErr -5551 Undefined selector
FUNCTION NewGestalt (selector: OSType; selectorfunction: ProcPtr): OSErr
Available since System 6.0.4.
Trap Macro
_NewGestalt ($A3AD)
Registers on entry A0: address of new selector function
D0: selector code
Registers on exit D0: result code
Result codes
noErr 0 No error
memFullErr -108 Ran out of memory
gestaltDupSelectorErr -5552 Selector already exists
gestaltLocationErr -5553 Function not in system heap
FUNCTION ReplaceGestalt (selector: OSType; selectorfunction: ProcPtr;
VAR oldGestaltFunction: ProcPtr): OSErr;
Available since System 6.0.4.
Trap Macro
_ReplaceGestalt ($A5AD)
Registers on entry A0: address of new selector function
D0: selector code
Registers on exit A0: address of old selector function
D0: result code
Result codes
noErr 0 No error
gestaltUndefSelectorErr -5551 Undefined selector
gestaltLocationErr -5553 Function not in system heap
#define CallSelectorFunctionProc(userRoutine, selector, response) \
(*userRoutine)(selector, response)
Trap Macro
??? (???)
Registers on entry ???
Registers on exit ???
Result codes
noErr 0 No error
??? ??? ???
#define NewSelectorFunctionProc(userRoutine) \
(SelectorFunctionUPP)(userRoutine)
Trap Macro
??? (???)
Registers on entry ???
Registers on exit ???
Result codes
noErr 0 No error
??? ??? ???
Undocumented Gestalt Manager Routines
-------------------------------------
FUNCTION? GestaltDispatch? (???):OSErr;?
Trap Macro
_GestaltDispatch ($A0AD)
Registers on entry ???
Registers on exit ???
Result codes
noErr 0 No error
???
NOTE:
Found in the MPW, THINK C and THINK Pascal Traps Interface file
on 'Bookmark CD 14'.
Available since System 6.0.4 but code will always return error -50
(paramErr). (Lawrence D'Oliveiro, Rene Ros)
FUNCTION? GetGestaltProcPtr? (selector?: OSType;
var selectorfunction: ProcPtr): OSErr;?
Trap Macro
_GetGestaltProcPtr ($A7AD)
Registers on entry D0: selector code?
Registers on exit ??: address of selector function
Result codes
noErr 0 No error
???
NOTE:
Found in the MPW Traps Interface file on 'Bookmark CD 14'.
Available since System 6.0.4 but code will always return error -50
(paramErr). (Lawrence D'Oliveiro, Rene Ros)
I (Rene Ros) have written Pascal code to do what this system call
probably is planned to do in the future.
Gestalt Value Routines
----------------------
Please note the GestaltValue routines are currently invoked through a
library, and only in the future will GestaltValue be moved into the OS
proper. The GestaltValue functions are stack based and don't use registers.
The GestaltValue library first checks to see if trap $ABF1 is implemented
(not with any system software available). If trap $ABF1 is implemented, all
calls to the library are routed to this trap, otherwise the library uses
embedded code.
WARNING:
The GestaltValue library distributed originally checks for the wrong trap
(_ThreadDispatch, $ABF2). Make sure your software doesn't crash when this
trap is installed by the Thread Manager Extension. See Related Software
chapter for availability.
(Most info about the GestaltValue functions was provided by
Marco Piovanelli and Dave Radcliff).
FUNCTION NewGestaltValue (selector: OSType; newValue: LongInt): OSErr;
Available as glue code.
Trap Macro Selector
_GestaltValueDispatch ($ABF1) $0401
Result codes
noErr 0 No error
unimpErr -4 Unimplemented core routine
memFullErr -108 Ran out of memory
(and other memory errors)
gestaltDupSelectorErr -5552 Selector already exists
FUNCTION ReplaceGestaltValue (selector: OSType;
replacementValue: LongInt): OSErr;
Available as glue code.
Trap Macro Selector
_GestaltValueDispatch ($ABF1) $0402
Result codes
noErr 0 No error
unimpErr -4 Unimplemented core routine
memFullErr -108 Ran out of memory
(and other memory errors)
gestaltUndefSelectorErr -5551 Undefined selector
FUNCTION DeleteGestaltValue (selector: OSType): OSErr;
Available as glue code.
Trap Macro Selector
_GestaltValueDispatch ($ABF1) $0203
Result codes
noErr 0 No error
unimpErr -4 Unimplemented core routine
gestaltUndefSelectorErr -5551 Undefined selector
Kilo-liners
===========
This chapter will list very small pieces of code which are related to
any Gestalt Routine.
Modula-2 source:
TYPE
SelectorFunction =
PROCEDURE
(
(*selector :*) OSType,
VAR (*response :*) LONGCARD
) : OSErr;
C-source:
typedef pascal OSErr (*SelectorFunction)(OSType, long);
Direct Gestalt Calls
--------------------
You can use the following code to call directly the Gestalt, NewGestalt and
ReplaceGestalt traps. In that way the (large) glue code will not be
installed by your compiler. (Contributions by Lawrence D'Oliveiro and
Marco Piovanelli).
Modula-2 source:
PROCEDURE Gestalt
( selector : OSType;
VAR response : LONGINT
) : OSErr;
(* direct call to Gestalt trap. *)
CODE
0225FH, (* move.l (sp)+, a1 *)
0201FH, (* move.l (sp)+, d0 *)
0A1ADH, (* _Gestalt *)
02288H, (* move.l a0, (a1) *)
03E80H; (* move.w d0, (sp) *)
Pascal-source:
FUNCTION Gestalt (selector: OSType;
VAR response: LONGINT): OSErr;
{direct call to Gestalt trap.}
inline $225F, $201F, $A1AD, $2288, $3E80;
Modula-2 source:
PROCEDURE NewGestalt
( selector: OSType;
gestaltFunction: SelectorFunction
): OSErr;
(* direct call to NewGestalt trap. *)
CODE 0205FH, (* move.l (sp)+, a0 *)
0201FH, (* move.l (sp)+, d0 *)
0A3ADH, (* _NewGestalt *)
03E80H; (* move.w d0, (sp) *)
Pascal-source:
FUNCTION NewGestalt (selector: OSType;
gestaltFunction: ProcPtr): OSErr;
{direct call to NewGestalt trap}
inline $205F, $201F, $A3AD, $3E80;
Modula-2 source:
PROCEDURE ReplaceGestalt
( selector : OSType;
gestaltFunction : SelectorFunction;
VAR oldGestaltFunction : SelectorFunction
) : OSErr;
(* direct call to Gestalt trap. *)
CODE
0225FH, (* move.l (sp)+, a1 *)
0205FH, (* move.l (sp)+, a0 *)
0201FH, (* move.l (sp)+, d0 *)
0A5ADH, (* _ReplaceGestalt *)
02288H, (* move.l a0, (a1) *)
03E80H; (* move.w d0, (sp) *)
Pascal-source:
FUNCTION ReplaceGestalt (selector: OSType;
gestaltFunction: ProcPtr;
VAR oldGestaltFunction: ProcPtr
): OSErr;
{direct call to ReplaceGestalt trap.}
inline $225F, $205F, $201F, $A5AD, $2288, $3E80;
Direct GestaltValue Calls
-------------------------
You can use the following code to call directly the NewGestaltValue,
ReplaceGestaltValue and DeleteGestaltValue when the _GestaltValueDispatch
trap is available.
Pascal-source: *20
FUNCTION NewGestaltValue(selector: OSType, newValue: LongInt): OSErr;
inline $303C, $0401, $ABF1;
FUNCTION ReplaceGestaltValue(selector: OSType,
replacementValue: LongInt): OSErr;
inline $303C, $0402, $ABF1;
FUNCTION DeleteGestaltValue(selector: OSType): OSErr;
inline $303C, $0203, $ABF1;
GestaltSelectorZero
-------------------
With all the selectors that are supposed to return non-zero values if
installed, it may be helpful to have a utility routine that returns a zero
value (instead of an error) if a selector isn't installed. It's short and
sweet because it makes a direct call to the _Gestalt trap; of course this
means you can't use it on systems earlier than 6.0.4.
(Contributed by Lawrence D'Oliveiro)
Modula-2 source:
PROCEDURE GestaltSelectorZero (Selector: OSType): LONGCARD;
(* returns the value of the specified Gestalt selector,
or zero if unknown. *)
CODE 0201FH, (* move.l (sp)+, d0 *)
0A1ADH, (* _Gestalt *)
06702H, (* beq.s @2 *)
091C8H, (* sub.l a0, a0 *)
02E88H; (* @2: move.l a0, (sp) *)
Pascal-source:
FUNCTION GestaltSelectorZero (Selector: OSType): LongInt;
{returns the value of the specified Gestalt selector,}
{or zero if unknown.}
inline $201F, $A1AD, $6702, $91C8, $2E88;
Call Gestalt Definiton Direct
-----------------------------
Suppose you have just loaded a GDEF resource, or replaced one and keep the
original around and store a pointer to it somewhere private. Suppose next,
you want to call it to obtain a response without using yet another selector.
Thats what the following inline code is usefull for. Just pass it the
usual selector and result parameters but also a pointer to the GDEF
(Lock it if it's still a relocatable block).
Pascal-source:
FUNCTION CallGestaltDEF (selector: OSType;
var result: LongInt;
aRoutine: ProcPtr): OSErr;
inline $205F, $4E90;
{MOVE.L (SP)+, A0}
{JSR (A0)}
Abbreviations
=============
ADB - Apple Desktop Bus
AS - AppleShare
ASC - Apple Sound Chip
ASIC - Application specfic integrated circuit
AWAC - ???
Caboose - processor that manages the keyswitch, system power,
the real-time clock, and parameter RAM
CLUT/DAC - color look-up table and digital-to-analog converter IC
Combo - chip, combines the functions of the SCC and the SCSI controller
CPU - Central Processing Unit
DAFB - Direct Access Frame Buffer
DAV - Digital Audio Video
DDC - Display Driver Chip
DFAC - Digitally Filtered Audio Chip
DMA - Direct Memory Access
DN - Developer Note
DSP - Digital Signal Processor
FPU - Floating Point Unit
GDEF - Gestalt DEFinition (code resource)
GPi - General Purpose Input
IM - Inside Macintosh (old volumes I-VI)
IOP - Input/Output Processor
IWM - Integrated Woz Machine
JDB - Junction Data Bus
MCU - Memory Control Unit
MMU - Memory Management Unit
OCE - Open Colloboration Environment
OSS - ???
PDS - Processor-Direct Slot
PGC - Parity Generator Chip
PMMU - Paged Memory Management Unit
PSRAM - Pseudo Static RAM
PPC - Process-to-Process Communication
PWM - Pulse-Width Modulated?
RAMDAC - Random Access Memory, Digital/Analog Converter
RBV - RAM-Based Video
RTC chip - Real-Time Clock chip
SCC - Serial Communications Controller
SCSI - Small Computer System Interface
SIMM - Single In-line Memory Module
Sonic - chip for built-in Ethernet
Sporty - a custom IC that provides sound output amplification functions
SRAM - Static RAM
SWIM - Super Integrated Woz Machine
TN - Technical Note
VIA - Versatile Interface Adapter
VRAM - Video RAM
VM - Virtual Memory
VDAC - Video Digital to Analog Converter
YANCC - Yet Another NuBus Controller Chip
FA - File Access
RA - Remote Access
Sources
=======
*1 Apple Inc.; TN M.OV.GestaltSysenvirons (OV 16), May 1987
*2 Symantec Corp.; THINK Pascal 4.0.1
*3 Carl C.Hewitt; Gestalt DA 0.4 1990
*4 Apple Computer Inc.; TN M.NW.AppleTalk2 (NW 13), Feb.1992
*5 Apple Computer Inc.; MacTCP Programmer's Guide.
*6 Apple Computer Inc.; QuickTime ImageCompression source files
*7 Symantec Corp.; Think C GestaltGlue source files
*8 Eric Simenel, Apple Computer France; Gestalt dcmd 1.0
*9 Apple Computer Inc.; AppleTalk Remote Access API External
Reference Specification
*10 Symantec Corp.; THINK Reference 1.0
*11 Apple Computer Inc.; CommToolbox 1.1 source files
*12 Apple Computer Inc.; Macintosh Easy Open programmer's docs
*13 Apple Computer Japan, Inc.; sysvINIT source files
*14 ICOM Simulations; TMON Professional Reference Manual (p.192)
*15 Apple Computer Inc.; Thread Manager 1.1 documentation
*16 Apple Computer Inc.; TN M.DV.CD-ROMDriver (DV 22), May 1993
*17 Apple Computer Inc.; TN M.HW.SCSI.Q&As (HW 540), Oct. 1990
*18 Apple Computer Inc.; TN M.TX.TextServicesMgr.Q&As (TE 531), May 1993
*19 Apple Computer Inc.; MPW Interface files on Bookmark CD 14
*20 Apple Computer Inc.; GestaltEqu interface files on ETO #12
*21 Apple Computer Inc.; 'Sept 93 Late Breaking Q&As' on Bookmark CD 15
*22 Apple Computer Inc.; Drag Manager Programmer's Guide
Miscellaneous
=============
This chapter lists a number of miscellaneous data.
AppleShare File & Print Server selector codes
---------------------------------------------
The selectors are defined when the application has run. If it is still
running (or wasn't properly quit) the response is one. When the application
has properly quit the response is zero.
admn AppleShare Admin
asps AppleShare Print Server
hgfd AppleShare File Server
Glue code
---------
The following programming software includes glue-code to return some
responses even if the Gestalt Manager is not available. Every entry
includes the selectors of which the Glue-code can return a response.
Symantec THINK Pascal [at least since 4.0]:
atlk, fpu , kbd , kbd , lram, mach, mmu , qd , ram , sysv, vers
Related Software
----------------
Listed below is software which may be of interest to developers because
they are a tool providing information from the Gestalt Manager, include
Gestalt-related source code or provide additional capabilities to the
Gestalt Manager. Included is also were you can find or get a copy.
All software available on sumex-aim.stanford.edu is also available on the
INFO-MAC CD-ROM by Pacific HiTech, Inc. The INTERNET FTP-sites mentioned
may have one or more mirror sites as well. Locations on CompuServe are not
included.
5thColumn, GestaltProbe (by Kamran Golriz)
Extension with MPW Tools to query other mac on a network, one of
the tools is GestaltProbe.
CD-ROM: Bookmark CD (Apple Developer Group)
:Tools & Applications:Network & Communications:5th Column:
AEgestalt (by Kent Sandvik)
Uses Apple Events to get Gestalt response from remote machine,
includes C-source. (Requires color?? Doesn't run on MacPlus)
FTP: ftp.apple.com [130.43.2.3]
/dts/mac/sc/snippets/platforms.tools/aegestalt-1-0.hqx
CD-ROM: Bookmark CD (Apple Developer Group)
:Documentation & Samples:Sample Code:Snippets:
Platforms & Tools:AEGestalt 1.0:
DisplayGestalt (by Craig Marciniak)
Small application displays configuration using Gestalt Mgr, includes
C-source.
FTP: mac.archive.umich.edu [141.211.165.34]
/development/libraries/displaygestalt.cpt.hqx
Feature Teller 1.0 (by Jennifer Minge)
Sample application quering Gestalt Mgr (or SysEnvirons if not
available). Includes THINK Pascal source.
CD-ROM: Bookmark CD (Apple Developer Group)
:Tools & Applications:OS/Toolbox:Feature Teller 1.0:
Gestalt! 2.9.4 (by Roland Mansson)
Displays responses from installed selectors.
FTP: ftp.lu.se [130.235.132.89]
/pub/mac/util/Gestalt!_294.cpt.hqx
sumex-aim.stanford.edu [36.44.0.6]
/info-mac/util/gestalt-28.hqx
GestaltDA 0.4 (by Carl C. Hewitt)
Displays responses from installed selectors.
CD-ROM: Bookmark CD (Apple Developer Group)
:Tools & Applications:OS/Toolbox:GestaltDA 0.4
Gestalt DCMD
This dcmd (debugger command for MacsBug) allows you to "use" Gestalt
when you're in MacsBug.
FTP: ftp.apple.com [130.43.2.3]
/dts/mac/sc/snippets/platforms.tools/gestalt-dcmd.hqx
CD-ROM: Bookmark CD (Apple Developer Group)
:Documentation & Samples:Sample Code:Snippets:
Platforms & Tools:Gestalt dcmd:
GestaltExt (by Andre Cavegn)
External for 4TH Dimension Relational Database application from
ACI/ACI US.
FTP: sumex-aim.stanford.edu [36.44.0.6]
/info-mac/dev/a4d/ext/gestalt-ext.hqx
GestaltGlue
Glue code and interface in C and assembly.
CD-ROM: Bookmark CD (Apple Developer Group)
:Documentation & Samples:Sample Code:System 7.0 samples:
DTS.Utilities:Gestalt*
GestaltTalk (by Brigham Stevens, Apple Computer DTS)
Code part of Notification Hacks to show how you can communicate
between an application and an INIT using the Gestalt Mgr. Includes
C-source files.
CD-ROM: Bookmark CD (Apple Developer Group)
:Documentation & Samples:Sample Code:Snippets:
Toolbox:Notification Hacks:GestaltTalk:
GestaltValue (anonymous, Apple Computer Inc.)
Library and interface for use of the GestaltValue functions.
CD-ROM: Bookmark CD (Apple Developer Group)
:Tools & Applications:OS/Toolbox:GestaltValue:
email: Dave Radcliff, Mac DTS
radcliff@apple.com
GestaltWatch ext 1.0a1 (by Scott Bronson)
Tracks all calls to NewGestalt and ReplaceGestalt traps.
Not available yet.
Gestalt XFCN 3.2.1 (by Jeff Iverson)
Hypercard XFCN to query the Gestalt Manager.
FTP: sumex-aim.stanford.edu [36.44.0.6]
/info-mac/card/gestalt-321.hqx
Gestaltzeigen appl 1.0 (by B. Kevin Hardman)
Displays responses from installed selectors and any bit
interpretation. Not available yet.
Technical Notes:
M.OV.GestaltSysenvirons (Gestalt & SysEnvirons)
M.NW.AppleTalk2 (AppleTalk The Rest Of the Story)
M.OS.GestaltMgr.Q&As (Gestalt Manager Questions and Answers)
FTP: ftp.apple.com [130.43.2.3]
/dts/mac/tn/
overview/gestalt-and-system-environs.hqx
networking/appletalk2.hqx
M.OU.GestaltMgr.Q&As not yet available
CD-ROM: Bookmark CD (Apple Developer Group)
:Documentation & Samples:Mac Tech Notes:
Overview (OV):OV 16 - Gestalt & SysEnvirons
Networking (NW):NW 13 - AppleTalk The Rest Of
Operating System (OS):OS 505 - Gestalt Mgr Q&As
Test Gestalt
Examples to test for QuickDraw version and Virtual Memory status,
includes C-source.
FTP: ftp.apple.com [130.43.2.3]
/dts/mac/sc/snippets/toolbox/testgestalt.hqx
CD-ROM: Bookmark CD (Apple Developer Group)
:Technical Documentation:Sample Code:Snippets:
Toolbox:TestGestalt:
About this list
===============
I would like to see this list to be a combined effort by different persons
who have together access to a wide area of information.
This list may contain (educated) guesses and perhaps even false
information, so no guarantee is made about the contents.
You may use this information freely (see Legal Stuff chapter), but when you
find information not included in IM VI or in this list; please mail it me.
If you have additions, corrections, comments, suggestions, news about
available software, etc., please mail me. Please, also mention the source
you used.
For ways to contact me, see my address at the end of this list. If you want
to remain anonymous, please mention this and it will be taken care of.
I don't have all the documentation or knowledge and I don't want to, and
I'am certainly not Mr.Gestalt.
Availability
------------
If you have downloaded this list from CompuServe, BBS, or any other service,
you will notice some strange things like 'FTP-sites' which have to do
with the fact that this list originates from INTERNET.
This list is originally distributed in the following ways:
**INTERNET**
USENET newsgroup comp.sys.mac.programmer (c.s.m.p.)
This list has become too large to post to c.s.m.p., so starting from
version 2.2 this list will no longer be posted. Instead an announcement
will be posted informing were you can find the latest version.
FTP-site
sumex-aim.stanford.edu [36.44.0.6]
Every minor and major version is submitted to the info-mac archives at
sumex-aim.stanford.edu. (/info-mac/dev/info/gestalt-selectors-XX.hqx)
It is also available on its mirror sites (e.g. in Europe: lth.se).
FINGER
You can also read this list by using finger to 'rgaros@bio.vu.nl'.
Tip: 'finger rgaros@bio.vu.nl | more' or
'finger rgaros@bio.vu.nl > gestalt-selectors.etx'
My .plan file which you see when you do this, may be more up-to-date and
may include small corrections, or contains a preliminary version of the
next version to be published.
**COMPUSERVE**
Starting with version 2.0 this list will be uploaded to the
Macintosh Developers Forum (MACDEV). Only new minor and major versions
will be uploaded once. It will then appear in the Tools/Debuggers section.
**GENERAL**
CD-ROM or BBS
Because of permissions I granted you may get this list from a CD-ROM
(BBS in a BOX, Info-Mac CD-ROM, MacWorld CD-ROM BeNeLux, Nautilus CD-ROM)
or via a BBS from Internet, CompuServe or a CD-ROM. If you do, and the
release was more than a month ago, there is probably already a new version.
DISTRIBUTION LIST
Every person on the distribution list gets automatically an update by email
whenever there are some changes. If you want to join this distribution list
you need to send me an email asking to be included. The same applies when
you want to be removed from the list.
If you are subscribed to this list and the email to you bounces three times
and I'am not able to find the correct address you will be removed anyhow.
This service is only possible to those who have an account on Internet or
any other network reachable from Internet (CompuServe, AOL, AppleLink).
I can not provide mailing of printed versions or on disk by normal surface
mail.
PRINTED
If you want this list printed on paper you may want to try a new feature
included with the new LaserWriter 8.0 software. With it you can print four
pages on a single sheet of paper. When you set the page breaks correct,
this produces a very neat, little booklet.
Acknowledgements
----------------
I would like to thank the following persons for their contribution to
this list:
_NAME INTERNET EMAIL ADDRESS_
Anonymous contributor(s) <anonymous@secret.cia>
Lonnie R. Abelbeck <abelbeck@dev.abelbeck.com>
Ivan M Cavero Belaunde <ivanski@world.std.com>
Jim Browne <jbrowne@ncsa.uiuc.edu>
Scott Bronson <urge@mcl.mcl.ucsb.edu>
Mark Dawson <marc@apple.com>
Lawrence D'Oliveiro <ldo@waikato.ac.nz>
M. David Greenspon <gremicf@yalevm.ycc.yale.edu>
C.K. Haun <haun@apple.com>
Michael Hecht <Michael_Hecht@mac.sas.com>
Robert Hess <robert_hess@macweek.ziff.com>
Mark B. Johnson <mjohnson@apple.com>
David B. Lamkins <dblamkins@aol.com>
Roland Mansson <roland.mansson@ldc.lu.se>
Matsubayashi Kohji <matubays@ics.es.osaka-u.ac.jp>
Duane Murphy, Novell Inc. <damurphy@wc.novell.com>
Mark Nagata <nagata@kurims.kyoto-u.ac.jp>
Fabrizio Oddone <simula3@di.unito.it>
Marco Piovanelli <piovanel@ghost.dsi.unimi.it>
Francois Pottier <pottier@clipper.ens.fr>
Quinn <quinn@cs.uwa.edu.au>
Dave Radcliff, Apple Computer Inc. Mac DTS <radcliff@apple.com>
Pete Resnick <resnick@cogsci.uiuc.edu>
Leonard Rosenthol <leonardr@netcom.com>
Jeremy Roussak <jeremyr@dcs.qmw.ac.uk>
Sterling Babcock <jdsb@ee.duke.edu>
Victor Tan <victort@extro.ucc.su.oz.au>
John Watte <d88-jwa@nada.kth.se>
Chris Wysocki <wysocki@netcom.com>
And the Computer Department at the Biology Faculty of the Free University
in Amsterdam, The Netherlands for their help and support. Also special
thanks to Marco Piovanelli for his support and comments about preliminary
versions and updates.
The persons mentioned above provided information used in this list. They
did this on personal title, NOT on behalf of their employer, unless
explicitly listed otherwise.
I assume information you mail to me about Gestalt selectors may be used in
this list. Information made available to the general public (e.g. a posting
to a USENET newsgroup) is also included and the persons name added to this
chapter (and to the distribution list).
I will mail you back to thank you and include the parts from the list which
were changed, according to the information you provided, to let you check
them.
Definitions and Format
======================
This chapter explains where the word 'Gestalt' comes from, a few things
are defined and it explains how each selector code entry looks like.
Use in Language
---------------
Webster's Dictionary (?):
ge.stalt \g<e>-'s(h)t<a:>lt, -'s(h)t<o.>lt\ n, pl ge.stalt.en
\-<\e>n\ or gestalts (1922)
[G, lit., shape, form]
:a structure, configuration, or pattern of physical, biological, or
psychological phenomena so integrated as to constitute a functional
unit with properties not derivable by summation of its parts.
(Anders Wallgren)
German-Dutch dictionary:
Gestalt w [-en]
stature, figure, form; Ritter von der Traurigen -, knight of the
sorrowful figure.
Definitions
-----------
Apple System Software
These are selectors installed by System Software from Apple Computer, Inc.
Inside Macintosh (part VI) says this about them:
"Apple reserves for its own use all four-character sequences consisting
solely of lowercase letters and non alphabetic ASCII characters".
Apple Additional Software
These are selectors installed by additional software from
Apple Computer, Inc. The same as with the system software selectors applies.
Third Parties Software
These are selectors installed by software from parties other than
Apple Computer, Inc.
Inside Macintosh (part VI) says about these:
"If you have registered a creator string with Apple, you are strongly
encouraged to use that sequence as your selector code".
This type of selectors is included in this list with the motto "If you
don't know they are there, you can't do anything with them".
Format Selector Entry
---------------------
Format used to display information about each selector:
selector code (Software name & type [since version], by company/author)
constant name (description, documentation) OR description
CONST declaration; {remark} *ref.number to source
NOTE and or WARNING:
Where the type is one of:
app application (APPL)
cp control panel (cdev)
ext extension (INIT/appe/RDEV etc.)
Example:
COLA (Sugarwater ext [1.0] by John Sculley)
gestaltSugarwaterVersion
Returns version of Sugarwater as a 4-byte word.
gestaltSugarwaterVersion= 'COLA'; *0
WARNING: This example is fictitious.
NOTE:
Sugarwater? See the book 'West of Eden, The End of Innocence at
Apple' by Frank Rose.
Most selectors are listed as four characters, if there are only two or
three characters displayed the remainder are spaces (or it's a typo!).
Diacritical characters are shown in the most logical normal character and
at the end of the entry a note is included about which key-combination to
press with normal International system and US keyboard layout to get the
required diacritical character and also its ASCII code.
If a selector code is installed by Apple software the entry also includes
if it is an addition, a replacement or not listed in IM VI.
When 'INF' is at the end of the first line it means it is an informational
selector, all others are environmental selectors.
The source reference number may also be used in other places than indicated
above. It then applies to other parts of the entry or to the whole entry.
A single question mark indicates an uncertainty regarding that information.
Three question marks indicate complete abcense of the information.
Some constant-names may not originate from official publications.
Format Version Numbers
----------------------
BCD (Binary Coded Decimal)
$0x0402 means 4.0.2.
INTEGER
The decimal representation of the returned value is the version.
NumVersion
The format of the LongInt response can be coerced into type NumVersion,
which is the same format as used for the 'vers' resource type.
type
NumVersion = packed record
case INTEGER of
0: (majorRev: SignedByte; {1st part of version number in BCD}
minorRev: 0..9; {2nd part is 1 nibble in BCD}
bugFixRev: 0..9; {3rd part is 1 nibble in BCD}
stage: SignedByte; {stage code: dev, alpha, beta, final}
nonRelRev: SignedByte);{revision level of non-released version}
1: (version: LONGINT); {to use all 4 fields at one time}
end;
stage contains one of: $10 = development
$20 = alpha
$40 = beta
$80 = final
The 'atkv' selector returns the majorRev release as hexadecimal.
Legal Stuff
===========
(c) 1992-1993, Rene G.A. Ros
See other sections (below) for remarks regarding liability, trademarks and
distribution.
Notice of Liability
-------------------
The information in this list is distributed on an "AS IS" basis, without
warranty. While every precaution has been taken in the preparation of this
list, neither the editor nor any contributor shall have any liability to
any person or entity with respect to any liability, loss, or damage caused
or alleged to be caused directly or indirectly by the information contained
in this list or by the computer software and hardware products described
herein.
Trademarks
----------
Throughout this list trademarked names are used. Rather than put a
trademark symbol in every occurrence of a trademarked name, I state I am
using the names only in an editorial fashion and to the benefit of the
trademark owner with no intention of infringement of the trademark.
Distribution
------------
The information in this list may be used freely. When you use the
information in this list for COMMERCIAL purposes, you may consider sending
the editor a donation. You are not allowed to distribute this list outside
any computer network (especially printed, on disk or CD-ROM) unless you
have contacted the editor and received permission to do so. This is also to
ensure you have the latest version. The updates may not be distributed,
these are ONLY for the persons on the distribution list.
Permission for distribution is granted to:
Arizona Macintosh Users Group (BBS in a BOX CD-ROM)
IDG Communications Nederland (MacWorld CD-ROM)
METATEC Corporation (Nautilus CD-ROM)
Pacific HiTech, Inc. (Info-Mac CD-ROM)
You are not allowed to distribute modified versions of this list,
including, but not limited to, deleting, adding or moving text or adding
non-text parts. Distribution in any electronical format except a normal
(or compressed) text file is not allowed without permission.
You are not allowed to redistribute it with any other name than
'gestalt-selectors-XX.etx' (where XX is the version number) unless because
of technical reasons. In such case a name should be chosen which resambles
it as close as possible to avoid confusion.
Editor's Address
================
Rene G.A. Ros
student Computer Science, Institute of Technology
Del Court van Krimpenstraat 3
1067 SG Amsterdam - Geuzenveld
The Netherlands, Europe
Bank : Postbank 4578223, Amsterdam
Phone# : +31 20 611 92 74 / +31 20 611 87 00
Fax# : +31 20 611 60 06
Internet : rgaros@bio.vu.nl (preferred)
rgaros@nikhefk.nikhef.nl
rener@htsa.aha.nl
CompuServe: >INTERNET: rgaros@bio.vu.nl
100112,1363
Please contact me at the INTERNET address. I read my mail there
almost every day, while I log on to CompuServe only once or
twice a month. Perhaps in the future, when the contacts with
CompuServe members become more frequent, this may increase.